package laboratorioV.grupo21.tp4.checkeosPrevios;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import laboratorioV.grupo21.tp4.deposito.Deposito;
import laboratorioV.grupo21.tp4.deposito.Lado;
import laboratorioV.grupo21.tp4.deposito.Pasillo;

public class CheckDependencias {
	
	public void verificar() throws Exception{
		CheckSource sources = new CheckSource();
		sources.checkearYgenerarTodo();
	}
	public Deposito cargarDeposito()
	{
		PreparedStatement ps = null;		
		Connection con = null;
		Deposito deposito = new Deposito();
		try{
			Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
						
			con = DriverManager.getConnection("jdbc:derby:derbyDb/TP6;create=false");
			String strQuery = "SELECT * FROM DEPOSITO ORDER BY 1,2,3,4,5";
			ps = con.prepareStatement(strQuery, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
			
		    java.sql.ResultSet rs = ps.executeQuery();
		      
		    
			Lado ladoIzq;
			Lado ladoDer;
			Pasillo pasillo;
			Integer ultimoIdPasillo;
		    while(rs.next()){			
		    	ladoIzq = null;
				ladoDer = null;
				pasillo = null;
				
		    	ultimoIdPasillo = rs.getInt(2);
		    	
		    	if(rs.getString(3).equals("D"))
		    		ladoDer = new Lado(rs.getInt(4),rs.getInt(5));
		    	if(rs.getString(3).equals("I"))
					ladoIzq = new Lado(rs.getInt(4),rs.getInt(5));
		    	
		    	//Busca si el siguiente Lado es del mismo pasillo
		    	
		    	if(rs.next()){
		    		if(rs.getInt(2) == ultimoIdPasillo){
		    			if(rs.getString(3).equals("D"))
				    		ladoDer = new Lado(rs.getInt(4),rs.getInt(5));
				    	if(rs.getString(3).equals("I"))
							ladoIzq = new Lado(rs.getInt(4),rs.getInt(5));
		    		}
		    		else
		    			rs.previous();
		    	}
		    	//vuelve al anterior (pasa al siguiente en el siguiente loop)
		    	
		    	pasillo =  new Pasillo(ladoIzq,ladoDer);
				deposito.addPasillo(rs.getInt(2), pasillo);
					    	
		    }			
		}
		catch (Exception e) {
			System.out.println(e.getMessage());
		}
		finally{
			try {
				if(con != null)con.close();
				return deposito;
			} catch (SQLException e) {				
				e.printStackTrace();
			}
			
		}
		return null;

	}
	
		
}
